#ifndef _TERRAIN_H
#define _TERRAIN_H
#include <stdbool.h>

struct sTerrain
{
    int dimx;/**@brief dimx est la largeur du terrain(axe des abscisse) */
    int dimy;/**@brief dimy est la longueur du terrain(axe des ordonnee) */
    char** tab;/**\brief tableau de tableau de caractere */
};
typedef struct sTerrain Terrain;


/**@brief : Procedure terInit
<B>terInit alloue dans le tas un tableau
de tableau de caractere puis l'initialise avec un terrain de base,
qui est le terrain par default </B> */
void terInit(Terrain* ,int ,int );

/**@brief Procedure terLibiber
<B>terLibere libere la memoire du tableau de tableau de caractere(terrain)
 et met les champs dimx et dimy à 0 </B>*/
void terLibere(Terrain* );

/**@brief terGetDimx renvoi un entier
<B> terGetDimx recupere la dimension dimx du terrain</B>*/
int terGetDimx(const Terrain* );

/**@brief terGetDimy renvoie un entier
<B>terGetDimy recupere la dimension dimy du terrain</B>*/
int terGetDimy(const Terrain* );

/**@brief Procedure terSetXY
<B>terSetXY modifie l'etat de la case (x,y) du terrain
    apres verrification qu'elle se trouve bien
    dans le terrain </B>*/
void terSetXY(Terrain* ,int x,int y,const char );

/**@brief Fonction terGetXY revoie un caracter
 <B>terGetXY recupere le contenu de la case (x,y) du
  terrain apres verrification </B>*/
const char terGetXY(const Terrain* ,int x,int y);

/**@brief terPositionValide renvoie un booleen
 <B>terPositionValide verrifie la validité de la case (x,y),elle verifie
 si elle est vide(espace) un si il ya un obstacele(mur)</B> */
bool terPositionValide(const Terrain* ,int x,int y);

void terTestRegression();





#endif


